We believe that we have achieved one of the primary aims of this project; finding the shortest path between a given source and destination using Dijkstra algorithm. A partially working implementing has been developed.\\
We began by analysing Dijkstra algorithm in order to be able to understand how it works and how it can be applied to our problem domain. This helped us to gain a better understanding of the algorithm. We have also analysed concurrency which is one of the challenges in distributed systems. Although this part has not been fully implemented in our code, with enough time it is possible to extend the current solution to efficiently handle concurrency.\\

\subsection{Future works}
The implementation is a partial solution compared to a standard flight booking system. This solution can be improved in order to increase efficiency and add functionality. \\
Our current solution is able to search and return the shortest path from a given source to a destination, including the sub flights. It is possible to book and save the selected flights with the corresponding passengers and the customer related to the booking. \\
The current solution can be extended to allow the passengers to be able to choose their seats for a flight, it can also be improved to be able to handle concurrent seat booking. Our Dijkstra implementation can also be optimised to return more than one path, as the current solution only returns a single path. Or it can be tuned to return paths based only on low fares. \\ 
Concurrency can be handled with locks in order to avoid having different users booking the same flight legs and seats. The algorithm can be tuned to only return in between flights that have a fair amount of waiting time before continuing with the next flight, the current implementation doesn't take this into consideration in any way. The current Dijkstra implementation is rather slow and the time complexity can be greatly improved by using data structures such as: min-heaps, Fibonacci heaps and priority queues to implement the list of vertices in order to return the vertex with the smallest distance property at a lower cost. As well it might be possible to adapt the domain in such a way that the algorithm requires less loops in order to perform the same operations.